home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / nss / dev.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  18KB  |  1,005 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is the Netscape security libraries.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Netscape Communications Corporation.
  18.  * Portions created by the Initial Developer are Copyright (C) 1994-2000
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *
  23.  * Alternatively, the contents of this file may be used under the terms of
  24.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  25.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  26.  * in which case the provisions of the GPL or the LGPL are applicable instead
  27.  * of those above. If you wish to allow use of your version of this file only
  28.  * under the terms of either the GPL or the LGPL, and not to allow others to
  29.  * use your version of this file under the terms of the MPL, indicate your
  30.  * decision by deleting the provisions above and replace them with the notice
  31.  * and other provisions required by the GPL or the LGPL. If you do not delete
  32.  * the provisions above, a recipient may use your version of this file under
  33.  * the terms of any one of the MPL, the GPL or the LGPL.
  34.  *
  35.  * ***** END LICENSE BLOCK ***** */
  36.  
  37. #ifndef DEV_H
  38. #define DEV_H
  39.  
  40. /*
  41.  * dev.h
  42.  *
  43.  * Low-level methods for interaction with cryptoki devices
  44.  */
  45.  
  46. #ifdef DEBUG
  47. static const char DEV_CVS_ID[] = "@(#) $RCSfile: dev.h,v $ $Revision: 1.37 $ $Date: 2005/03/07 21:20:38 $";
  48. #endif /* DEBUG */
  49.  
  50. #ifndef NSSCKT_H
  51. #include "nssckt.h"
  52. #endif /* NSSCKT_H */
  53.  
  54. #ifndef NSSDEV_H
  55. #include "nssdev.h"
  56. #endif /* NSSDEV_H */
  57.  
  58. #ifndef DEVT_H
  59. #include "devt.h"
  60. #endif /* DEVT_H */
  61.  
  62. PR_BEGIN_EXTERN_C
  63.  
  64. /* the global module list
  65.  *
  66.  * These functions are for managing the global set of modules.  Trust Domains,
  67.  * etc., will draw from this set.  These functions are completely internal
  68.  * and only invoked when there are changes to the global module state
  69.  * (load or unload).
  70.  *
  71.  * nss_InitializeGlobalModuleList
  72.  * nss_DestroyGlobalModuleList
  73.  * nss_GetLoadedModules
  74.  *
  75.  * nssGlobalModuleList_Add
  76.  * nssGlobalModuleList_Remove
  77.  * nssGlobalModuleList_FindModuleByName
  78.  * nssGlobalModuleList_FindSlotByName
  79.  * nssGlobalModuleList_FindTokenByName
  80.  */
  81.  
  82. NSS_EXTERN PRStatus
  83. nss_InitializeGlobalModuleList
  84. (
  85.   void
  86. );
  87.  
  88. NSS_EXTERN PRStatus
  89. nss_DestroyGlobalModuleList
  90. (
  91.   void
  92. );
  93.  
  94. NSS_EXTERN NSSModule **
  95. nss_GetLoadedModules
  96. (
  97.   void
  98. );
  99.  
  100. NSS_EXTERN PRStatus
  101. nssGlobalModuleList_Add
  102. (
  103.   NSSModule *module
  104. );
  105.  
  106. NSS_EXTERN PRStatus
  107. nssGlobalModuleList_Remove
  108. (
  109.   NSSModule *module
  110. );
  111.  
  112. NSS_EXTERN NSSModule *
  113. nssGlobalModuleList_FindModuleByName
  114. (
  115.   NSSUTF8 *moduleName
  116. );
  117.  
  118. NSS_EXTERN NSSSlot *
  119. nssGlobalModuleList_FindSlotByName
  120. (
  121.   NSSUTF8 *slotName
  122. );
  123.  
  124. NSS_EXTERN NSSToken *
  125. nssGlobalModuleList_FindTokenByName
  126. (
  127.   NSSUTF8 *tokenName
  128. );
  129.  
  130. NSS_EXTERN NSSToken *
  131. nss_GetDefaultCryptoToken
  132. (
  133.   void
  134. );
  135.  
  136. NSS_EXTERN NSSToken *
  137. nss_GetDefaultDatabaseToken
  138. (
  139.   void
  140. );
  141.  
  142. /*
  143.  *  |-----------|<---> NSSSlot <--> NSSToken
  144.  *  | NSSModule |<---> NSSSlot <--> NSSToken
  145.  *  |-----------|<---> NSSSlot <--> NSSToken
  146.  */
  147.  
  148. /* NSSModule
  149.  *
  150.  * nssModule_Create
  151.  * nssModule_CreateFromSpec
  152.  * nssModule_AddRef
  153.  * nssModule_GetName
  154.  * nssModule_GetSlots
  155.  * nssModule_FindSlotByName
  156.  * nssModule_FindTokenByName
  157.  * nssModule_GetCertOrder
  158.  */
  159.  
  160. NSS_EXTERN NSSModule *
  161. nssModule_Create
  162. (
  163.   NSSUTF8 *moduleOpt,
  164.   NSSUTF8 *uriOpt,
  165.   NSSUTF8 *opaqueOpt,
  166.   void    *reserved
  167. );
  168.  
  169. /* This is to use the new loading mechanism. */
  170. NSS_EXTERN NSSModule *
  171. nssModule_CreateFromSpec
  172. (
  173.   NSSUTF8 *moduleSpec,
  174.   NSSModule *parent,
  175.   PRBool loadSubModules
  176. );
  177.  
  178. NSS_EXTERN PRStatus
  179. nssModule_Destroy
  180. (
  181.   NSSModule *mod
  182. );
  183.  
  184. NSS_EXTERN NSSModule *
  185. nssModule_AddRef
  186. (
  187.   NSSModule *mod
  188. );
  189.  
  190. NSS_EXTERN NSSUTF8 *
  191. nssModule_GetName
  192. (
  193.   NSSModule *mod
  194. );
  195.  
  196. NSS_EXTERN NSSSlot **
  197. nssModule_GetSlots
  198. (
  199.   NSSModule *mod
  200. );
  201.  
  202. NSS_EXTERN NSSSlot *
  203. nssModule_FindSlotByName
  204. (
  205.   NSSModule *mod,
  206.   NSSUTF8 *slotName
  207. );
  208.  
  209. NSS_EXTERN NSSToken *
  210. nssModule_FindTokenByName
  211. (
  212.   NSSModule *mod,
  213.   NSSUTF8 *tokenName
  214. );
  215.  
  216. NSS_EXTERN PRInt32
  217. nssModule_GetCertOrder
  218. (
  219.   NSSModule *module
  220. );
  221.  
  222. /* NSSSlot
  223.  *
  224.  * nssSlot_Destroy
  225.  * nssSlot_AddRef
  226.  * nssSlot_GetName
  227.  * nssSlot_GetTokenName
  228.  * nssSlot_IsTokenPresent
  229.  * nssSlot_IsPermanent
  230.  * nssSlot_IsFriendly
  231.  * nssSlot_IsHardware
  232.  * nssSlot_Refresh
  233.  * nssSlot_GetModule
  234.  * nssSlot_GetToken
  235.  * nssSlot_Login
  236.  * nssSlot_Logout
  237.  * nssSlot_SetPassword
  238.  * nssSlot_CreateSession
  239.  */
  240.  
  241. NSS_EXTERN PRStatus
  242. nssSlot_Destroy
  243. (
  244.   NSSSlot *slot
  245. );
  246.  
  247. NSS_EXTERN NSSSlot *
  248. nssSlot_AddRef
  249. (
  250.   NSSSlot *slot
  251. );
  252.  
  253. NSS_EXTERN void
  254. nssSlot_ResetDelay
  255. (
  256.   NSSSlot *slot
  257. );
  258.  
  259. NSS_EXTERN NSSUTF8 *
  260. nssSlot_GetName
  261. (
  262.   NSSSlot *slot
  263. );
  264.  
  265. NSS_EXTERN NSSUTF8 *
  266. nssSlot_GetTokenName
  267. (
  268.   NSSSlot *slot
  269. );
  270.  
  271. NSS_EXTERN NSSModule *
  272. nssSlot_GetModule
  273. (
  274.   NSSSlot *slot
  275. );
  276.  
  277. NSS_EXTERN NSSToken *
  278. nssSlot_GetToken
  279. (
  280.   NSSSlot *slot
  281. );
  282.  
  283. NSS_EXTERN PRBool
  284. nssSlot_IsTokenPresent
  285. (
  286.   NSSSlot *slot
  287. );
  288.  
  289. NSS_EXTERN PRBool
  290. nssSlot_IsPermanent
  291. (
  292.   NSSSlot *slot
  293. );
  294.  
  295. NSS_EXTERN PRBool
  296. nssSlot_IsFriendly
  297. (
  298.   NSSSlot *slot
  299. );
  300.  
  301. NSS_EXTERN PRBool
  302. nssSlot_IsHardware
  303. (
  304.   NSSSlot *slot
  305. );
  306.  
  307. NSS_EXTERN PRBool
  308. nssSlot_IsLoggedIn
  309. (
  310.   NSSSlot *slot
  311. );
  312.  
  313. NSS_EXTERN PRStatus
  314. nssSlot_Refresh
  315. (
  316.   NSSSlot *slot
  317. );
  318.  
  319. NSS_EXTERN PRStatus
  320. nssSlot_Login
  321. (
  322.   NSSSlot *slot,
  323.   NSSCallback *pwcb
  324. );
  325. extern const NSSError NSS_ERROR_INVALID_PASSWORD;
  326. extern const NSSError NSS_ERROR_USER_CANCELED;
  327.  
  328. NSS_EXTERN PRStatus
  329. nssSlot_Logout
  330. (
  331.   NSSSlot *slot,
  332.   nssSession *sessionOpt
  333. );
  334.  
  335. NSS_EXTERN void
  336. nssSlot_EnterMonitor
  337. (
  338.   NSSSlot *slot
  339. );
  340.  
  341. NSS_EXTERN void
  342. nssSlot_ExitMonitor
  343. (
  344.   NSSSlot *slot
  345. );
  346.  
  347. #define NSSSLOT_ASK_PASSWORD_FIRST_TIME -1
  348. #define NSSSLOT_ASK_PASSWORD_EVERY_TIME  0
  349. NSS_EXTERN void
  350. nssSlot_SetPasswordDefaults
  351. (
  352.   NSSSlot *slot,
  353.   PRInt32 askPasswordTimeout
  354. );
  355.  
  356. NSS_EXTERN PRStatus
  357. nssSlot_SetPassword
  358. (
  359.   NSSSlot *slot,
  360.   NSSUTF8 *oldPasswordOpt,
  361.   NSSUTF8 *newPassword
  362. );
  363. extern const NSSError NSS_ERROR_INVALID_PASSWORD;
  364. extern const NSSError NSS_ERROR_USER_CANCELED;
  365.  
  366. /*
  367.  * nssSlot_IsLoggedIn
  368.  */
  369.  
  370. NSS_EXTERN nssSession *
  371. nssSlot_CreateSession
  372. (
  373.   NSSSlot *slot,
  374.   NSSArena *arenaOpt,
  375.   PRBool readWrite /* so far, this is the only flag used */
  376. );
  377.  
  378. /* NSSToken
  379.  *
  380.  * nssToken_Destroy
  381.  * nssToken_AddRef
  382.  * nssToken_GetName
  383.  * nssToken_GetModule
  384.  * nssToken_GetSlot
  385.  * nssToken_NeedsPINInitialization
  386.  * nssToken_ImportCertificate
  387.  * nssToken_ImportTrust
  388.  * nssToken_ImportCRL
  389.  * nssToken_GenerateKeyPair
  390.  * nssToken_GenerateSymmetricKey
  391.  * nssToken_DeleteStoredObject
  392.  * nssToken_FindCertificates
  393.  * nssToken_FindCertificatesBySubject
  394.  * nssToken_FindCertificatesByNickname
  395.  * nssToken_FindCertificatesByEmail
  396.  * nssToken_FindCertificateByIssuerAndSerialNumber
  397.  * nssToken_FindCertificateByEncodedCertificate
  398.  * nssToken_FindTrustObjects
  399.  * nssToken_FindTrustForCertificate
  400.  * nssToken_FindCRLs
  401.  * nssToken_FindCRLsBySubject
  402.  * nssToken_FindPrivateKeys
  403.  * nssToken_FindPrivateKeyByID
  404.  * nssToken_Digest
  405.  * nssToken_BeginDigest
  406.  * nssToken_ContinueDigest
  407.  * nssToken_FinishDigest
  408.  */
  409.  
  410. NSS_EXTERN PRStatus
  411. nssToken_Destroy
  412. (
  413.   NSSToken *tok
  414. );
  415.  
  416. NSS_EXTERN NSSToken *
  417. nssToken_AddRef
  418. (
  419.   NSSToken *tok
  420. );
  421.  
  422. NSS_EXTERN NSSUTF8 *
  423. nssToken_GetName
  424. (
  425.   NSSToken *tok
  426. );
  427.  
  428. NSS_EXTERN NSSModule *
  429. nssToken_GetModule
  430. (
  431.   NSSToken *token
  432. );
  433.  
  434. NSS_EXTERN NSSSlot *
  435. nssToken_GetSlot
  436. (
  437.   NSSToken *tok
  438. );
  439.  
  440. NSS_EXTERN PRBool
  441. nssToken_NeedsPINInitialization
  442. (
  443.   NSSToken *token
  444. );
  445.  
  446. NSS_EXTERN nssCryptokiObject *
  447. nssToken_ImportCertificate
  448. (
  449.   NSSToken *tok,
  450.   nssSession *sessionOpt,
  451.   NSSCertificateType certType,
  452.   NSSItem *id,
  453.   NSSUTF8 *nickname,
  454.   NSSDER *encoding,
  455.   NSSDER *issuer,
  456.   NSSDER *subject,
  457.   NSSDER *serial,
  458.   NSSASCII7 *emailAddr,
  459.   PRBool asTokenObject
  460. );
  461.  
  462. NSS_EXTERN nssCryptokiObject *
  463. nssToken_ImportTrust
  464. (
  465.   NSSToken *tok,
  466.   nssSession *sessionOpt,
  467.   NSSDER *certEncoding,
  468.   NSSDER *certIssuer,
  469.   NSSDER *certSerial,
  470.   nssTrustLevel serverAuth,
  471.   nssTrustLevel clientAuth,
  472.   nssTrustLevel codeSigning,
  473.   nssTrustLevel emailProtection,
  474.   PRBool stepUpApproved,
  475.   PRBool asTokenObject
  476. );
  477.  
  478. NSS_EXTERN nssCryptokiObject *
  479. nssToken_ImportCRL
  480. (
  481.   NSSToken *token,
  482.   nssSession *sessionOpt,
  483.   NSSDER *subject,
  484.   NSSDER *encoding,
  485.   PRBool isKRL,
  486.   NSSUTF8 *url,
  487.   PRBool asTokenObject
  488. );
  489.  
  490. /* Permanently remove an object from the token. */
  491. NSS_EXTERN PRStatus
  492. nssToken_DeleteStoredObject
  493. (
  494.   nssCryptokiObject *instance
  495. );
  496.  
  497. NSS_EXTERN nssCryptokiObject **
  498. nssToken_FindCertificates
  499. (
  500.   NSSToken *token,
  501.   nssSession *sessionOpt,
  502.   nssTokenSearchType searchType,
  503.   PRUint32 maximumOpt,
  504.   PRStatus *statusOpt
  505. );
  506.  
  507. NSS_EXTERN nssCryptokiObject **
  508. nssToken_FindCertificatesBySubject
  509. (
  510.   NSSToken *token,
  511.   nssSession *sessionOpt,
  512.   NSSDER *subject,
  513.   nssTokenSearchType searchType,
  514.   PRUint32 maximumOpt,
  515.   PRStatus *statusOpt
  516. );
  517.  
  518. NSS_EXTERN nssCryptokiObject **
  519. nssToken_FindCertificatesByNickname
  520. (
  521.   NSSToken *token,
  522.   nssSession *sessionOpt,
  523.   NSSUTF8 *name,
  524.   nssTokenSearchType searchType,
  525.   PRUint32 maximumOpt,
  526.   PRStatus *statusOpt
  527. );
  528.  
  529. NSS_EXTERN nssCryptokiObject **
  530. nssToken_FindCertificatesByEmail
  531. (
  532.   NSSToken *token,
  533.   nssSession *sessionOpt,
  534.   NSSASCII7 *email,
  535.   nssTokenSearchType searchType,
  536.   PRUint32 maximumOpt,
  537.   PRStatus *statusOpt
  538. );
  539.  
  540. NSS_EXTERN nssCryptokiObject **
  541. nssToken_FindCertificatesByID
  542. (
  543.   NSSToken *token,
  544.   nssSession *sessionOpt,
  545.   NSSItem *id,
  546.   nssTokenSearchType searchType,
  547.   PRUint32 maximumOpt,
  548.   PRStatus *statusOpt
  549. );
  550.  
  551. NSS_EXTERN nssCryptokiObject *
  552. nssToken_FindCertificateByIssuerAndSerialNumber
  553. (
  554.   NSSToken *token,
  555.   nssSession *sessionOpt,
  556.   NSSDER *issuer,
  557.   NSSDER *serial,
  558.   nssTokenSearchType searchType,
  559.   PRStatus *statusOpt
  560. );
  561.  
  562. NSS_EXTERN nssCryptokiObject *
  563. nssToken_FindCertificateByEncodedCertificate
  564. (
  565.   NSSToken *token,
  566.   nssSession *sessionOpt,
  567.   NSSBER *encodedCertificate,
  568.   nssTokenSearchType searchType,
  569.   PRStatus *statusOpt
  570. );
  571.  
  572. NSS_EXTERN nssCryptokiObject **
  573. nssToken_FindTrustObjects
  574. (
  575.   NSSToken *token,
  576.   nssSession *sessionOpt,
  577.   nssTokenSearchType searchType,
  578.   PRUint32 maximumOpt,
  579.   PRStatus *statusOpt
  580. );
  581.  
  582. NSS_EXTERN nssCryptokiObject *
  583. nssToken_FindTrustForCertificate
  584. (
  585.   NSSToken *token,
  586.   nssSession *sessionOpt,
  587.   NSSDER *certEncoding,
  588.   NSSDER *certIssuer,
  589.   NSSDER *certSerial,
  590.   nssTokenSearchType searchType
  591. );
  592.  
  593. NSS_EXTERN nssCryptokiObject **
  594. nssToken_FindCRLs
  595. (
  596.   NSSToken *token,
  597.   nssSession *sessionOpt,
  598.   nssTokenSearchType searchType,
  599.   PRUint32 maximumOpt,
  600.   PRStatus *statusOpt
  601. );
  602.  
  603. NSS_EXTERN nssCryptokiObject **
  604. nssToken_FindCRLsBySubject
  605. (
  606.   NSSToken *token,
  607.   nssSession *sessionOpt,
  608.   NSSDER *subject,
  609.   nssTokenSearchType searchType,
  610.   PRUint32 maximumOpt,
  611.   PRStatus *statusOpt
  612. );
  613.  
  614. NSS_EXTERN nssCryptokiObject **
  615. nssToken_FindPrivateKeys
  616. (
  617.   NSSToken *token,
  618.   nssSession *sessionOpt,
  619.   nssTokenSearchType searchType,
  620.   PRUint32 maximumOpt,
  621.   PRStatus *statusOpt
  622. );
  623.  
  624. NSS_EXTERN nssCryptokiObject *
  625. nssToken_FindPrivateKeyByID
  626. (
  627.   NSSToken *token,
  628.   nssSession *sessionOpt,
  629.   NSSItem *keyID
  630. );
  631.  
  632. NSS_EXTERN nssCryptokiObject *
  633. nssToken_FindPublicKeyByID
  634. (
  635.   NSSToken *token,
  636.   nssSession *sessionOpt,
  637.   NSSItem *keyID
  638. );
  639.  
  640. NSS_EXTERN NSSItem *
  641. nssToken_Digest
  642. (
  643.   NSSToken *tok,
  644.   nssSession *sessionOpt,
  645.   NSSAlgorithmAndParameters *ap,
  646.   NSSItem *data,
  647.   NSSItem *rvOpt,
  648.   NSSArena *arenaOpt
  649. );
  650.  
  651. NSS_EXTERN PRStatus
  652. nssToken_BeginDigest
  653. (
  654.   NSSToken *tok,
  655.   nssSession *sessionOpt,
  656.   NSSAlgorithmAndParameters *ap
  657. );
  658.  
  659. NSS_EXTERN PRStatus
  660. nssToken_ContinueDigest
  661. (
  662.   NSSToken *tok,
  663.   nssSession *sessionOpt,
  664.   NSSItem *item
  665. );
  666.  
  667. NSS_EXTERN NSSItem *
  668. nssToken_FinishDigest
  669. (
  670.   NSSToken *tok,
  671.   nssSession *sessionOpt,
  672.   NSSItem *rvOpt,
  673.   NSSArena *arenaOpt
  674. );
  675.  
  676. /* nssSession
  677.  *
  678.  * nssSession_Destroy
  679.  * nssSession_EnterMonitor
  680.  * nssSession_ExitMonitor
  681.  * nssSession_IsReadWrite
  682.  */
  683.  
  684. NSS_EXTERN PRStatus
  685. nssSession_Destroy
  686. (
  687.   nssSession *s
  688. );
  689.  
  690. /* would like to inline */
  691. NSS_EXTERN PRStatus
  692. nssSession_EnterMonitor
  693. (
  694.   nssSession *s
  695. );
  696.  
  697. /* would like to inline */
  698. NSS_EXTERN PRStatus
  699. nssSession_ExitMonitor
  700. (
  701.   nssSession *s
  702. );
  703.  
  704. /* would like to inline */
  705. NSS_EXTERN PRBool
  706. nssSession_IsReadWrite
  707. (
  708.   nssSession *s
  709. );
  710.  
  711. /* nssCryptokiObject
  712.  *
  713.  * An object living on a cryptoki token.
  714.  * Not really proper to mix up the object types just because 
  715.  * nssCryptokiObject itself is generic, but doing so anyway.
  716.  *
  717.  * nssCryptokiObject_Destroy
  718.  * nssCryptokiObject_Equal
  719.  * nssCryptokiObject_Clone
  720.  * nssCryptokiCertificate_GetAttributes
  721.  * nssCryptokiPrivateKey_GetAttributes
  722.  * nssCryptokiPublicKey_GetAttributes
  723.  * nssCryptokiTrust_GetAttributes
  724.  * nssCryptokiCRL_GetAttributes
  725.  */
  726.  
  727. NSS_EXTERN void
  728. nssCryptokiObject_Destroy
  729. (
  730.   nssCryptokiObject *object
  731. );
  732.  
  733. NSS_EXTERN PRBool
  734. nssCryptokiObject_Equal
  735. (
  736.   nssCryptokiObject *object1,
  737.   nssCryptokiObject *object2
  738. );
  739.  
  740. NSS_EXTERN nssCryptokiObject *
  741. nssCryptokiObject_Clone
  742. (
  743.   nssCryptokiObject *object
  744. );
  745.  
  746. NSS_EXTERN PRStatus
  747. nssCryptokiCertificate_GetAttributes
  748. (
  749.   nssCryptokiObject *object,
  750.   nssSession *sessionOpt,
  751.   NSSArena *arenaOpt,
  752.   NSSCertificateType *certTypeOpt,
  753.   NSSItem *idOpt,
  754.   NSSDER *encodingOpt,
  755.   NSSDER *issuerOpt,
  756.   NSSDER *serialOpt,
  757.   NSSDER *subjectOpt
  758. );
  759.  
  760. NSS_EXTERN PRStatus
  761. nssCryptokiTrust_GetAttributes
  762. (
  763.   nssCryptokiObject *trustObject,
  764.   nssSession *sessionOpt,
  765.   NSSItem *sha1_hash,
  766.   nssTrustLevel *serverAuth,
  767.   nssTrustLevel *clientAuth,
  768.   nssTrustLevel *codeSigning,
  769.   nssTrustLevel *emailProtection,
  770.   PRBool *stepUpApproved
  771. );
  772.  
  773. NSS_EXTERN PRStatus
  774. nssCryptokiCRL_GetAttributes
  775. (
  776.   nssCryptokiObject *crlObject,
  777.   nssSession *sessionOpt,
  778.   NSSArena *arenaOpt,
  779.   NSSItem *encodingOpt,
  780.   NSSItem * subjectOpt,
  781.   CK_ULONG * crl_class,
  782.   NSSUTF8 **urlOpt,
  783.   PRBool *isKRLOpt
  784. );
  785.  
  786. /* I'm including this to handle import of certificates in NSS 3.5.  This
  787.  * function will set the cert-related attributes of a key, in order to
  788.  * associate it with a cert.  Does it stay like this for 4.0?
  789.  */
  790. NSS_EXTERN PRStatus
  791. nssCryptokiPrivateKey_SetCertificate
  792. (
  793.   nssCryptokiObject *keyObject,
  794.   nssSession *sessionOpt,
  795.   NSSUTF8 *nickname,
  796.   NSSItem *id,
  797.   NSSDER *subject
  798. );
  799.  
  800. NSS_EXTERN void
  801. nssModuleArray_Destroy
  802. (
  803.   NSSModule **modules
  804. );
  805.  
  806. /* nssSlotArray
  807.  *
  808.  * nssSlotArray_Destroy
  809.  */
  810.  
  811. NSS_EXTERN void
  812. nssSlotArray_Destroy
  813. (
  814.   NSSSlot **slots
  815. );
  816.  
  817. /* nssTokenArray
  818.  *
  819.  * nssTokenArray_Destroy
  820.  */
  821.  
  822. NSS_EXTERN void
  823. nssTokenArray_Destroy
  824. (
  825.   NSSToken **tokens
  826. );
  827.  
  828. /* nssCryptokiObjectArray
  829.  *
  830.  * nssCryptokiObjectArray_Destroy
  831.  */
  832. NSS_EXTERN void
  833. nssCryptokiObjectArray_Destroy
  834. (
  835.   nssCryptokiObject **object
  836. );
  837.  
  838. /* nssSlotList
  839. *
  840.  * An ordered list of slots.  The order can be anything, it is set in the
  841.  * Add methods.  Perhaps it should be CreateInCertOrder, ...?
  842.  *
  843.  * nssSlotList_Create
  844.  * nssSlotList_Destroy
  845.  * nssSlotList_Add
  846.  * nssSlotList_AddModuleSlots
  847.  * nssSlotList_GetSlots
  848.  * nssSlotList_FindSlotByName
  849.  * nssSlotList_FindTokenByName
  850.  * nssSlotList_GetBestSlot
  851.  * nssSlotList_GetBestSlotForAlgorithmAndParameters
  852.  * nssSlotList_GetBestSlotForAlgorithmsAndParameters
  853.  */
  854.  
  855. /* nssSlotList_Create
  856.  */
  857. NSS_EXTERN nssSlotList *
  858. nssSlotList_Create
  859. (
  860.   NSSArena *arenaOpt
  861. );
  862.  
  863. /* nssSlotList_Destroy
  864.  */
  865. NSS_EXTERN void
  866. nssSlotList_Destroy
  867. (
  868.   nssSlotList *slotList
  869. );
  870.  
  871. /* nssSlotList_Add
  872.  *
  873.  * Add the given slot in the given order.
  874.  */
  875. NSS_EXTERN PRStatus
  876. nssSlotList_Add
  877. (
  878.   nssSlotList *slotList,
  879.   NSSSlot *slot,
  880.   PRUint32 order
  881. );
  882.  
  883. /* nssSlotList_AddModuleSlots
  884.  *
  885.  * Add all slots in the module, in the given order (the slots will have
  886.  * equal weight).
  887.  */
  888. NSS_EXTERN PRStatus
  889. nssSlotList_AddModuleSlots
  890. (
  891.   nssSlotList *slotList,
  892.   NSSModule *module,
  893.   PRUint32 order
  894. );
  895.  
  896. /* nssSlotList_GetSlots
  897.  */
  898. NSS_EXTERN NSSSlot **
  899. nssSlotList_GetSlots
  900. (
  901.   nssSlotList *slotList
  902. );
  903.  
  904. /* nssSlotList_FindSlotByName
  905.  */
  906. NSS_EXTERN NSSSlot *
  907. nssSlotList_FindSlotByName
  908. (
  909.   nssSlotList *slotList,
  910.   NSSUTF8 *slotName
  911. );
  912.  
  913. /* nssSlotList_FindTokenByName
  914.  */
  915. NSS_EXTERN NSSToken *
  916. nssSlotList_FindTokenByName
  917. (
  918.   nssSlotList *slotList,
  919.   NSSUTF8 *tokenName
  920. );
  921.  
  922. /* nssSlotList_GetBestSlot
  923.  *
  924.  * The best slot is the highest ranking in order, i.e., the first in the
  925.  * list.
  926.  */
  927. NSS_EXTERN NSSSlot *
  928. nssSlotList_GetBestSlot
  929. (
  930.   nssSlotList *slotList
  931. );
  932.  
  933. /* nssSlotList_GetBestSlotForAlgorithmAndParameters
  934.  *
  935.  * Highest-ranking slot than can handle algorithm/parameters.
  936.  */
  937. NSS_EXTERN NSSSlot *
  938. nssSlotList_GetBestSlotForAlgorithmAndParameters
  939. (
  940.   nssSlotList *slotList,
  941.   NSSAlgorithmAndParameters *ap
  942. );
  943.  
  944. /* nssSlotList_GetBestSlotForAlgorithmsAndParameters
  945.  *
  946.  * Highest-ranking slot than can handle all algorithms/parameters.
  947.  */
  948. NSS_EXTERN NSSSlot *
  949. nssSlotList_GetBestSlotForAlgorithmsAndParameters
  950. (
  951.   nssSlotList *slotList,
  952.   NSSAlgorithmAndParameters **ap
  953. );
  954.  
  955. #ifdef NSS_3_4_CODE
  956.  
  957. NSS_EXTERN PRBool
  958. nssToken_IsPresent
  959. (
  960.   NSSToken *token
  961. );
  962.  
  963. NSS_EXTERN nssSession *
  964. nssToken_GetDefaultSession
  965. (
  966.   NSSToken *token
  967. );
  968.  
  969. NSS_EXTERN PRStatus
  970. nssToken_GetTrustOrder
  971. (
  972.   NSSToken *tok
  973. );
  974.  
  975. NSS_EXTERN PRStatus
  976. nssToken_NotifyCertsNotVisible
  977. (
  978.   NSSToken *tok
  979. );
  980.  
  981. NSS_EXTERN PRStatus
  982. nssToken_TraverseCertificates
  983. (
  984.   NSSToken *token,
  985.   nssSession *sessionOpt,
  986.   nssTokenSearchType searchType,
  987.   PRStatus (* callback)(nssCryptokiObject *instance, void *arg),
  988.   void *arg
  989. );
  990.  
  991. NSS_EXTERN PRBool
  992. nssToken_IsPrivateKeyAvailable
  993. (
  994.   NSSToken *token,
  995.   NSSCertificate *c,
  996.   nssCryptokiObject *instance
  997. );
  998.  
  999.  
  1000. #endif
  1001.  
  1002. PR_END_EXTERN_C
  1003.  
  1004. #endif /* DEV_H */
  1005.